package com.xixibaby.core.message;

import java.util.Date;
import java.util.List;

/**
 * 直接执行
 * @param <T>
 */
public interface Excute<T extends ExeObj> {
    void excute(ChannelGroup<T> context, T object);

    List<Boolean> excute(Channel<T> target, T object);

    /**
     * 定时发送 会强制改变发送时间为指定时间
     */
    void excuteByTime(Date date, ChannelGroup<T> context, T object);

    void excuteByTime(Date date, Channel<T> context, T object);

    /**
     * 基础时间  会影响最终的发送时间  通过基础时间算偏移量
     */
    void excute(Date delay, Channel<T> context, T object);

    void excute(Date delay, ChannelGroup<T> context, T object);
}
